
/*--------------------------------------------------------------------------------------------
* Replication code for main paper. 

	User-written packages used: plotplain, grc1leg, matmap. 
	Type ssc install [package_name] to install before running this code.
*-------------------------------------------------------------------------------------------*/

clear *
set scheme plotplain

* set up conjoint data
cap prog drop setup_conjoint
prog def setup_conjoint
	use conjoint-exp-data, clear
	merge m:1 caseid using demographics-data
	drop _m
	merge m:1 caseid using info-exp-data
	drop _m
	merge m:1 caseid using raked-ps-weights
	drop _m
	replace raked_wt = weight if raked == . & weight ~= .
	merge 1:1 caseid id task profile using conjoint-weights-US
	drop if _m == 2
	drop _m
	ren raked_wtn weight_conjoint
	replace weight_conjoint = weight*weight_conjoint if weight_conjoint ~= .
	replace weight_conjoint = raked_wt if weight_conjoint == .
	drop raked_wt weight
	gen c_wealth_quint = 0 if c_wealth < 3
	replace c_wealth_quint = 1 if c_wealth == 3 | c_wealth == 4
	replace c_wealth_quint = 2 if c_wealth == 5 | c_wealth == 6
	replace c_wealth_quint = 3 if c_wealth == 7 | c_wealth == 8
	replace c_wealth_quint = 4 if c_wealth == 9
end

* set up info experiment data
cap prog drop setup_info
prog def setup_info
	use info-exp-data, clear
	merge 1:1 caseid using demographics-data
	drop if _m == 2
	drop _m
	merge 1:1 caseid using raked-ps-weights
	drop _m
	replace raked_wt = weight if raked == . & weight ~= .
	drop weight
end

* set up US YouGov conjoint 
cap prog drop setup_conjoint_us
prog def setup_conjoint_us
	use us-conjoint-exp-data, clear
	gen c_wealth_quint = 0 if c_wealth < 3
	replace c_wealth_quint = 1 if c_wealth == 3 | c_wealth == 4
	replace c_wealth_quint = 2 if c_wealth == 5 | c_wealth == 6
	replace c_wealth_quint = 3 if c_wealth == 7 | c_wealth == 8
	replace c_wealth_quint = 4 if c_wealth == 9
end

* define categorical prior about legislators' wealth
cap prog drop dist
prog def dist
	gen dist_ave_q = 1 if dist_ave < -3.24
	replace dist_ave_q = 2 if dist_ave >= -3.24 & dist_ave < -1.45
	replace dist_ave_q = 3 if dist_ave >= -1.45 & dist_ave < -.15
	replace dist_ave_q = 4 if dist_ave >= -.15 & dist_ave ~= .
end

* prep of main wealth effect results
cap prog drop mainamce
prog def mainamce
	mat tab = r(table)
	mat e = J(5,3,.)
	forval i = 1/5 {
		mat e[`i',1] = tab[1,`i']
		mat e[`i',2] = tab[5,`i']
		mat e[`i',3] = tab[6,`i']
	}
	clear
	svmat e
	gen n = _n
end

* prep for subgroup graphs
cap prog drop mfxgraph5
prog def mfxgraph5
	mat tab = r(table)
	mat e = J(10,3,.)
	forval i = 1/10 {
		mat e[`i',1] = tab[1,`i']
		mat e[`i',2] = tab[5,`i']
		mat e[`i',3] = tab[6,`i']
	}
	clear
	svmat e
	gen n = _n in 1/5
	replace n = _n-4.5 in 6/10
	gen g = 1 in 1/5
	replace g = 2 in 6/10
end

* prep for in-group bias graphs
cap prog drop matprep
prog def matprep
	mat tab = r(table)
	mat b = tab[1..1,1..4]'
	mat lb = tab[5..5,1..4]'
	mat ub = tab[6..6,1..4]'
	mat est = b,lb,ub
	clear
	svmat est
	gen n = _n
end

* conjoint graph
cap prog drop graph_amce 
program define graph_amce
	args y w /* y = outcome variable 
				w = x-axis label */
	reg `y' i.c_wealth_q i.c_edu i.c_occup i.co_party $somecovs ///
		$addcovs $cond $cond2 $wgt, cl(caseid)
	mat coef = e(b)
	mat var = vecdiag(e(V))
	matmap var se, m(sqrt(@))
	mat coef = coef', se'
	scalar R = rowsof(coef)-1
	mat coef = coef[1..R,1..2]
	clear
	svmat coef
	gen names = ""
	local names : rownames coef
	local k = 1
	foreach j of local names {
		replace names = "`j'" in `k'
		local k = `k' + 1
		}
	gen drop1 = regexm(names, "info_")
	gen drop2 = regexm(names, "a1_first")
	gen drop3 = regexm(names, "country")
	egen drop = rowtotal(drop*)
	drop if drop > 0
	drop drop*
	gen lb = coef1 + invnormal(.025)*coef2
	gen ub = coef1 + invnormal(.975)*coef2
	gen n = _n
	replace n = n + 1 in 1/5
	replace n = n + 2 in 6/9
	replace n = n + 3 in 10/17
	replace n = n + 4 in 18/19
	replace n = n + 5 in 20/21
	replace n = n + 6 in 22/23
	replace n = n + 7 in 24/25
	tempfile g
	save `g', replace
	clear
	set obs 7
	local m 1 7 12 21 24 27 30
	gen n = .
	local k = 1
	foreach j of local m {
		replace n = `j' in `k'
		local k = `k' + 1
		}
	merge 1:1 n using `g'
	sort n
	drop _m
	gen label = ""
	for any "{bf:Wealth}" "Bottom quintile" "2nd quintile" "3rd quintile" ///
	"4th quintile" "Top quintile" "{bf:Education Level/Prestige}" "Lowest" ///
	"Medium" "Medium-high" "High" ///
	"{bf:Occupation}" "Teacher" "Farmer" "Local legislator" ///
	"Small business" "Accountant" "Surgeon" "Lawyer" "CEO" ///
	"{bf:Partisanship}" "Different" "Same" ///
	"{bf:Gender}" "Different" "Same" ///
	"{bf:Race/Ethnicity}" "Different" "Same" ///
	"{bf:Religion}" "Different" "Same" \ any 1 2 3 4 5 6 7 ///
	8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32: ///
		replace label = "X" in Y
	gen group = (coef1 == .)
	gen length = length(trim(label))
	local maxl = 40
	local pad : di _dup(`maxl') " "
	replace label = trim(label) + substr("`pad'", 1, `maxl' - length) if group == 1
	gen order = _n
	sort order
	local obs = _N
	forval i = 1/`obs' {
		local name = label in `i'
		label define order `i' "`name'", modify
		}
	label values order order
	twoway (rcap ub lb order, horizontal msize(0) lcolor(black)) ///
		(scatter order coef1 if group == 0, mcolor(black) msymbol(o)) ///
		(scatter order coef1 if group == 1, mcolor(none) msymbol(o)), ///
		legend(off) yscale(reverse) ///
		ylabel(#36, valuelab angle(0) labsize(vsmall)) ///
		ytitle("") xline(0, lcolor(black) lwidth(medium) lpattern(dot)) ///
		yline(1 7 12 21 24 27 30, lcolor(gs8) lpattern(solid) lwidth(medium)) ///
		xtitle(`w', size(small)) name(`y', replace)
end

* covariates and other globals
global somecovs i.co_gender i.co_race i.co_relig 
global addcovs a1_first info_treat i.country
global cond if task < 6
global wgt [pw=weight_conjoint]
global wgti [pw=raked_wt]


*-------- Figure 2 ---------------*

global cond2 
setup_conjoint
graph_amce vote "Change in probability of choosing a candidate profile"


*-------- Figure 3 ---------------*

setup_info
loc t1 "Legislator at the 10th percentile"
loc t2 "Legislator at the median"
loc t3 "Legislator at the 90th percentile"
local j = 1
foreach x in p10 med p90 {
	sum idist_`x', d
	loc out_max_`x' = r(p99)
	loc out_min_`x' = r(p1)
	hist idist_`x' if idist_`x' < `out_max_`x'' & idist_`x' > `out_min_`x'' ///
		& info_treat == 1, ///
		bin(35) color(black%30) percent ///
		xline(0, lwidth(medthick) lcolor(black) lpattern(solid)) ///
		name(d_`x', replace) note("") title("{bf:`t`j''}" " ", size(small)) ///
		xtitle("") ytitle("") ylabel(, labsize(small)) ///
		xlabel(-9.25 "10,000x" -6.9 "1,000x" -4.6 "100x" -3.2 "25x" -2.3 "10x" -1.7 "5x" -1.1 "3x" -.4 "1.5x" ///
			.4 "1.5x" 1.1 "3x" 1.7 "5x" 2.3 "10x" 3.2 "25x" 4.6 "100x" 6.9 "1,000x" 9.25 "10,000x", labsize(vsmall)) ///
		text(15 0 "Desired = actual value {&rarr}", size(vsmall) placement(w)) ///
		text(-5 0 " {bf:{&larr} Desired < actual}	", size(vsmall) placement(w)) ///
		text(-5 0 " {bf:	Desired > actual {&rarr}}", size(vsmall) placement(e)) nodraw 
	loc j = `j' + 1
}
gr combine d_p10 d_med d_p90, xcommon ycommon col(1) ///
	l1("{it:y}-axis: Percent", size(small)) ///
	b1("{it:x}-axis: Desired v. actual legislator wealth", size(small))


*-------- Figure 4 ---------------*

** by income
setup_conjoint
reg vote i.income2##i.c_wealth_q $somecovs i.co_party i.c_edu i.c_occup ///
	$addcovs $cond $wgt, cl(caseid)
margins, at(c_wealth_q = (0/4) income2 = (1 2)) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(orange) horizontal) ///
	(scatter n e1 if g == 1, msymbol(S) mcolor(orange)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(O) mcolor(black)), ///
	legend(order(2 "Low" 4 "High") ring(0) pos(5) rows(1)) ///
	ytitle("") xtitle("") yscale(reverse) yscale(range(.75(.25)5.75)) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	xtitle("") ytitle("") title("{bf:By Respondent Income}") ///
	name(g1, replace)

** by wealth
global cond2 
setup_conjoint
preserve
collapse assets country $wgt, by(caseid)
drop if assets == .
gen assets_q = .
forval i = 1/4 {
	egen assets_q_`i' = cut(assets) if country == `i', g(5)
	replace assets_q = assets_q_`i' if country == `i'
	drop assets_q_`i'
}
keep caseid assets_q
tempfile a
save `a', replace
restore
merge m:1 caseid using `a'
drop _m
reg vote i.assets_q##i.c_wealth_q $somecovs i.co_party i.c_edu i.c_occup ///
	$addcovs $cond $wgt, cl(caseid)
margins, at(c_wealth_q = (0/4) assets_q = (0 4)) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(orange) horizontal) ///
	(scatter n e1 if g == 1, msymbol(S) mcolor(orange)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(O) mcolor(black)), ///
	legend(off)	ytitle("") xtitle("") yscale(reverse) yscale(range(.75(.25)5.75) alt) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	xtitle("") ytitle("") title("{bf:By Respondent Wealth}") ///
	name(g2, replace)
grc1leg g1 g2, ycommon l1("{it:y}-axis: Quintile of candidate's wealth", size(small)) ///
	b1("{it:x}-axis: Probability of supporting a candidate profile", size(small))


*-------- Figure 5 ---------------*

setup_conjoint_us
ren weight weight_conjoint
gen a1_first = 0
gen info_treatmeant = 0
gen country = 1
graph_amce newleg "Change in perceived probability of candidate being an effective legislator"


*-------- Figure 6 ---------------*

** effectiveness
setup_conjoint_us
reg newleg nooccedu##(i.c_wealth_q co_party co_relig co_gender co_race) [pw=weight], cl(caseid)
margins, at(c_wealth_q = (0/4) nooccedu = (0 1)) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(green) horizontal) ///
	(scatter n e1 if g == 1, msymbol(T) mcolor(green) msize(medlarge)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(D) mcolor(black)), ///
	legend(order(2 "With education/occupation" 4 "Without education/occupation") ///
		ring(1) pos(6) row(1)) ///
	xtitle("Average predicted perceived probability" "of candidate being an effective legislator") ///
	ytitle("Quintile of candidate's wealth") ///
	yscale(reverse) yscale(range(.75(.25)5.75)) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	name(g1, replace)  title("{bf:Candidate Effectiveness}")
	
** candidate choice
setup_conjoint_us
reg vote nooccedu##(i.c_wealth_q co_party co_relig co_gender co_race) [pw=weight], cl(caseid)
margins, at(c_wealth_q = (0/4) nooccedu = (0 1)) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(green) horizontal) ///
	(scatter n e1 if g == 1, msymbol(T) mcolor(green) msize(medlarge)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(D) mcolor(black)), ///
	legend(order(2 "With education/occupation" 4 "Without education/occupation") ///
		ring(1) pos(6) row(1)) ///
	xtitle("Average predicted probability" "of choosing a candidate profile") ///
	ytitle("Quintile of candidate's wealth") ///
	yscale(reverse) yscale(range(.75(.25)5.75) alt) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	name(g2, replace) title("{bf:Candidate Choice}")
grc1leg g1 g2, ycommon rows(1)


*-------- Figure 7 ---------------*

setup_conjoint_us
ren weight weight_conjoint
gen a1_first = 0
gen info_treatmeant = 0
gen country = 1
graph_amce lobby "Change in perceived probability of candidate being captured by lobby groups"


*-------- Figure 8 ---------------*

setup_conjoint
** partisanship
reg vote i.co_party##i.c_wealth_q i.c_occup i.c_edu $somecovs ///
	$addcovs $cond $wgt, cl(caseid)
margins, at(c_wealth = (0 4) co_party = (1 0)) post
matprep
twoway (rcap est2 est3 n if n < 3, horizontal msize(0) mcolor(black)) ///
	(scatter n est1 if n < 3, msymbol(O) mcolor(black)) ///
	(rcap est2 est3 n if n > 2, horizontal msize(0) lcolor(orange)) ///
	(scatter n est1 if n > 2, msymbol(S) mcolor(orange)), ///
	ylabel(1 `""Lowest" "wealth quintile""' ///
		2 `""Highest" "wealth quintile""' ///
		3 `""Lowest" "wealth quintile""' ///
		4 `""Highest" "wealth quintile""') ///
	name(g1, replace) legend(order(2 "In-group" 4 "Out-group") rows(1)) ///
	yscale(reverse) title("{bf:Partisanship}") ///
	ytitle("") xtitle("") yscale(range(0.5(.5)4.5))

** race/ethnicity
setup_conjoint
reg vote co_race##i.c_wealth_q co_party i.c_occup i.c_edu co_gender co_relig ///
	$addcovs $cond $wgt, cl(caseid)
margins, at(c_wealth = (0 4) co_race = (1 0)) post
matprep
twoway (rcap est2 est3 n if n < 3, horizontal msize(0) mcolor(black)) ///
	(scatter n est1 if n < 3, msymbol(O) mcolor(black)) ///
	(rcap est2 est3 n if n > 2, horizontal msize(0) lcolor(orange)) ///
	(scatter n est1 if n > 2, msymbol(S) mcolor(orange)), ///
	ylabel(none) ///
	name(g2, replace) legend(off) ///
	yscale(reverse off) title("{bf:Race/Ethnicity}") ///
	ytitle("") xtitle("") yscale(range(0.5(.5)4.5))

** religion
setup_conjoint
reg vote co_relig##i.c_wealth_q co_party i.c_occup i.c_edu i.co_gender i.co_race ///
	$addcovs $cond $wgt, cl(caseid)
margins, at(c_wealth = (0 4) co_relig = (1 0)) post
matprep
twoway (rcap est2 est3 n if n < 3, horizontal msize(0) mcolor(black)) ///
	(scatter n est1 if n < 3, msymbol(O) mcolor(black)) ///
	(rcap est2 est3 n if n > 2, horizontal msize(0) lcolor(orange)) ///
	(scatter n est1 if n > 2, msymbol(S) mcolor(orange)), ///
	ylabel(1 `""Lowest" "wealth quintile""' ///
		2 `""Highest" "wealth quintile""' ///
		3 `""Lowest" "wealth quintile""' ///
		4 `""Highest" "wealth quintile""') ///
	name(g3, replace) legend(off) ///
	yscale(reverse alt) title("{bf:Religion}") ///
	ytitle("") xtitle("") yscale(range(0.5(.5)4.5))
grc1leg g1 g2 g3, xcommon ycommon col(3) ///
	b1("{it:x}-axis: Average predicted probability of supporting a candidate", size(small)) ///
	l1("{it:y}-axis: Candidate profile", size(small))


*-------- Figure 9 ---------------*

setup_info
loc t1 "Legislator at the 10th percentile"
loc t2 "Legislator at the median"
loc t3 "Legislator at the 90th percentile"
local j = 1
foreach x in p10 med p90 {
	sum dist_`x', d
	loc out_max_`x' = r(p99)
	loc out_min_`x' = r(p1)
	hist dist_`x' if dist_`x' < `out_max_`x'' & dist_`x' > `out_min_`x'', ///
		bin(35) color(black%30) percent ///
		xline(0, lwidth(medthick) lcolor(black) lpattern(solid)) ///
		name(dist_`x', replace) note("") title("{bf:`t`j''}", size(small)) ///
		xtitle("") ytitle("") ylabel(, labsize(small)) ///
		xlabel(-9.25 "10,000x" -6.9 "1,000x" -4.6 "100x" -3.2 "25x" -2.3 "10x" -1.7 "5x" -1.1 "3x" -.4 "1.5x" ///
			.4 "1.5x" 1.1 "3x" 1.7 "5x" 2.3 "10x" 3.2 "25x" 4.6 "100x" 6.9 "1,000x" 9.25 "10,000x", labsize(vsmall)) ///
		text(15 0 "{&larr} Guess = actual", size(vsmall) placement(e)) ///
		text(-5 0 " {bf:{&larr} Guess < actual}		", size(vsmall) placement(w)) ///
		text(-5 0 " {bf:	Guess > actual {&rarr}}", size(vsmall) placement(e)) nodraw 
	loc j = `j' + 1
}
gr combine dist_p10 dist_med dist_p90, xcommon ycommon col(1) ///
	l1("{it:y}-axis: Percent", size(small)) ///
	b1("{it:x}-axis: Guesses v. actual legislator wealth", size(small))


*-------- Figure 10 ---------------*

setup_info
sum dist_ave, d
global out_max_ave = r(p99)
global out_min_ave = r(p1)
global distif dist_ave < $out_max_ave & dist_ave > $out_min_ave
setup_conjoint
reg vote info_treat##(i.c_wealth_q co_party i.c_occup i.c_edu $somecovs ///
	i.country) $cond & $distif & a1_first == 1 $wgt, cl(caseid)
margins, at(c_wealth_q = (0/4) info_treat = (0 1)) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(orange) horizontal) ///
	(scatter n e1 if g == 1, msymbol(S) mcolor(orange)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(O) mcolor(black)), ///
	legend(order(2 "No information on actual legislators' wealth" ///
		4 "Information on actual legislators' wealth") ring(1) pos(6) row(1)) ///
	yscale(reverse) yscale(range(.75(.25)5.75)) ///
	ytitle("Quintile of candidate's wealth", size(small)) ///
	xtitle("Average predicted probability of choosing a candidate profile", size(small)) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	name(g1, replace) aspect(.9)


*-------- Figure 11 ---------------*

setup_conjoint
dist
** inaccurate priors
reg vote i.dist_ave_q##info_treat##(i.c_wealth_q co_party i.c_occup i.c_edu $somecovs ///
	i.country) $cond & $distif & a1_first == 1 $wgt, cl(caseid)
margins, at(c_wealth_q = (0/4) info_treat = (0 1) dist_ave_q = 1) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(orange) horizontal) ///
	(scatter n e1 if g == 1, msymbol(S) mcolor(orange)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(O) mcolor(black)), ///
	title({bf:Respondents with most innacurate/low guess}) ///
	legend(order(2 "No information on actual legislators' wealth" ///
		4 "Information on actual legislators' wealth") ring(1) pos(6) row(1)) ///
	ytitle("") xtitle("") yscale(reverse) yscale(range(.75(.25)5.75)) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	name(g1, replace)
	
** accurate priors
setup_conjoint
dist
reg vote i.dist_ave_q##info_treat##i.c_wealth_q co_party i.c_occup i.c_edu $somecovs ///
	i.country $cond & $distif & a1_first == 1 $wgt, cl(caseid)
margins, at(c_wealth_q = (0/4) info_treat = (0 1) dist_ave_q = 4) post
mfxgraph5
twoway (rcap e2 e3 n if g == 1, msize(0) lcolor(orange) horizontal) ///
	(scatter n e1 if g == 1, msymbol(S) mcolor(orange)) ///
	(rcap e2 e3 n if g == 2, msize(0) lcolor(black) horizontal) ///
	(scatter n e1 if g == 2, msymbol(O) mcolor(black)), ///
	title({bf:Respondents with accurate or higher guess}) ///
	legend(off) ///
	ytitle("") xtitle("") yscale(reverse alt) yscale(range(.75(.25)5.75)) ///
	ylabel(1.25 `""Lowest" "quintile""' ///
		2.25 "2nd quintile" 3.25 "3rd quintile" 4.25 "4th quintile" ///
		5.25 `""Highest" "quintile""') ///
	yline(1.75 2.75 3.75 4.75, lpattern(solid) lwidth(vthin) lcolor(gs8)) ///
	name(g2, replace)
grc1leg g1 g2, ycommon xcommon col(2) ///
	b1("{it:x}-axis: Average predicted probability of choosing a candidate profile", size(small)) ///
	l1("{it:y}-axis: Quintile of candidate's wealth", size(small))


** end